package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.junit.Test;

public class StreamDemo {
	@Test
	public void output() {
		FileOutputStream fos = null;
		try {
			// 1.创建输出字节流
			fos = new FileOutputStream("a.txt");
			// 2个参数的构造，第二个参数是True代表追加写，False代表覆盖
			// FileOutputStream fos = new FileOutputStream("a.txt",true);
			// 2.写
			fos.write('a');  // int
			fos.write("bcde".getBytes()); // byte[]
			// 3.刷新
			fos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 4.关闭
			if (fos != null) {
				try {
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	@Test
	public void output2() {
		// try(声明对象) 当执行完Try里不管是否抛了异常，执行后都会自动调用fos.close方法
		try (FileOutputStream fos = new FileOutputStream("a.txt")) {
			// 2.写
			fos.write('a');  // int
			fos.write("bcde".getBytes()); // byte[]
			// 3.刷新
			fos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	@Test
	public void input() {
		// try(声明对象) 当执行完Try里不管是否抛了异常，执行后都会自动调用fos.close方法
		try (FileInputStream fis = new FileInputStream("a.txt")) {
			// 2.读取
			byte[] content = new byte[fis.available()];
			fis.read(content);
			
			System.out.println(new String(content));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}
